Description:
DCL detects classes that contain several independent groups of fields and methods. Such a class may be divided into several smaller classes each performing their own task. Smaller classes with well-defined sets of responsibilities are easier to understand and modify.
Incorrect:
class DataContainer {
private ArrayList apples = new ArrayList();
void addApple(IApple apple) {
apples.Add(apple);
}
int getNumApples() {
return apples.Count;
}
private ArrayList oranges = new ArrayList();
void addOrange(IOrange orange) {
oranges.Add(orange);
}
int getNumOranges() {
return oranges.Count;
}
}
Correct:
class AppleContainer {
private ArrayList apples = new ArrayList();
void addApple(IApple apple) {
apples.Add(apple);
}
int getNumApples() {
return apples.Count;
}
}
class OrangeContainer {
private ArrayList oranges = new ArrayList();
void addOrange(IOrange orange) {
oranges.Add(orange);
}
int getNumOranges() {
return oranges.Count;
}
}
Refactoring: